#ifndef PARTRICLE_H
#define PARTRICLE_H

#include "vec4.h"
#include "atom.h"
#include <vector>
using namespace std;

class particle
{
private:
    int type, ll, lu;
    real mass;
    real xixx, xiyy, xizz;
    vec3 r0, r1, r2, r3;                   // position vector
    vec3 f, t, fp, tp;                     // force ant torque vector
    vec3 o0, o1, o2, o3, o4;
    vec4 q0, q1, q2, q3, q4;

public:
    particle(){};
    particle(int t0, int, int, real m);     // object constructor
    
    int num;
    vector<atom> a;                         // array of atoms
    vector<vec3> rel;                       // relative position 
    void init();
    void atmmol();                          
    void molatm();                          // motion of particle
    void predict();	                    // motion of atoms
    void correct();	
    void binning();
    void periodicbc();                      // apply periodic boundary condition
    void tether();                          // calculate tether force
    void addforce(vec3);                    // add force to vec f
    void clearforce();                      // set force to 0
    void info();
    

};

#endif
